perm filename TMP.MF[MF,DEK]4 blob sn#756275 filedate 1984-05-29 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00059 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00005 00002	input font1base
C00006 00003	% A by Ann Lasko-Harvill
C00007 00004	% B by William Burley
C00009 00005	% C by Arthur Samuel
C00011 00006	% D by Dan Mills
C00013 00007	% E by Joey Tuttle
C00014 00008	% F by Pavel Curtis
C00016 00009	% G by Jean-Luc Bonnetain
C00019 00010	% H by John Hershberger
C00021 00011	% I by Nori Takusue
C00022 00012	% J by Lynn Ruggles
C00023 00013	% K by Dikran Karagueuzian
C00025 00014	% L by Bruce Leban
C00027 00015	% M by Kwang-Chun Park
C00029 00016	% N by Dave Siegel
C00031 00017	% O by Bruce Fleischer
C00033 00018	% P by Ed Williams
C00035 00019	% Q by Neenie Billawala
C00037 00020	% R by Renata Byl
C00039 00021	% S by pinch-hitter Joey Tuttle
C00041 00022	% T by Tuan Pham
C00043 00023	% alternate T by Theresa-Marie Rhyne
C00045 00024	% U by Don Knuth
C00046 00025	% V by Kanchi Gopinath
C00047 00026	% W by Stan Osborne
C00049 00027	% X by Alan Spragens
C00050 00028	% Y by Arnie Olds
C00051 00029	% Z by Malcolm Brown
C00054 00030	% a by Ann Lasko-Harvill
C00056 00031	% b by Dave Siegel
C00059 00032	% c by Alan Spragens
C00060 00033	% d by Jean-Luc Bonnetain
C00064 00034	% e by Dan Mills
C00066 00035	% f by Malcolm Brown
C00068 00036	% g by Bruce Leban
C00072 00037	% h by Arnie Olds
C00073 00038	% i by Bruce Fleischer
C00075 00039	% j by John Hershberger
C00079 00040	% k by Renata Byl
C00080 00041	% l by Don Knuth
C00081 00042	% m by Dikran Karagueuzian
C00083 00043	% n by Lynn Ruggles
C00085 00044	% o by Stan Osborne
C00088 00045	% p by Theresa-Marie Rhyne
C00090 00046	% q by Pavel Curtis
C00092 00047	% r by Arthur Samuel
C00094 00048	% s by Kwang-Chun Park
C00097 00049	% t by Tuan Pham
C00098 00050	% u by Nori Takusue
C00100 00051	% v by Ed Williams
C00101 00052	% w by Joey Tuttle
C00103 00053	% x by William Burley
C00104 00054	% y by Neenie Billawala
C00106 00055	% z by Kanchi Gopinath
C00107 00056	% - by Dan Mills
C00108 00057	% . by Dan Mills
C00109 00058	% , by Dan Mills
C00111 00059	% now we generate the font!
C00114 ENDMK
CāŠ—;
input font1base
proofing:=1;
fontmaking:=1;

def tracingall=tracingcommands:=3;
 tracingedges:=1; tracingtitles:=1; tracingequations:=1; tracingspecs:=1;
	tracingpens:=1; tracingchoices:=1; tracingstats:=2;
 tracingonline:=1;tracingoutput:=1;tracingmacros:=3; xyzzy:=1 enddef;

hppp:=722.909/72.27;
vppp:=hppp;
designsize:=29;

special "grayfont graps";
special "grayfontarea [fnt,dek]";
def autolabel = makelabel(" 6") enddef;

fontfamily "CLASS";
codingscheme "ASCII LETTERS ONLY";
% A by Ann Lasko-Harvill
vardef  char.A=
	setwidth .6em;
	pos1(1.3 thickwidth,45);
	pos2(1.5 thickwidth,0);
	x1=.3em;
	y1=capheight;
	x2l=.5em;
	y2=0;
	pos3(1.3thinwidth,75);
	pos4(thinwidth,65);
	x3=.1em;
	y3=.55xheight;
	x4=.4em;
	y4=y3;
	pos5(thinwidth,0);
	pos6(thinwidth,-50);
	x5=.1em;
	y5=0;
	x6=x1;
	y6l=y1l;
	stroke(1,2,.75,.3,.1);
	stroke(3,4,.5,.23,.1);
	stroke(5,6,.2,.2,.1);
	labelpos(1,2,3,4,5,6);
enddef;
% B by William Burley
vardef char.B =
      setwidth .57em;
      pos1(thinwidth,90);
      pos2(thinwidth,90);
      pos3(.75[thinwidth,thickwidth],0);
      pos4(thinwidth,-90);
      pos5(thinwidth,270);
      pos6(.75[thinwidth,thickwidth],180);
      pos7(thinwidth,90);
      pos8(thinwidth,90);
      pos9(thickwidth,0);
      pos10(thickwidth,0);
      pos11(thinwidth,-90);
      x1=x10l=x9l=x8=.17w;
      x2=x4=.48w;
      x5=x7=.52w;
      x11=x9r;
      x3=x4+.45(y2-y4);
      x6=x7+.45(y5-y7);
      y8l=y7l=0;
      y1r=y2r=capheight;
      y9=y8r;
      y10=y1l;
      y11=y4=y5=.52capheight;
      y3=.5[y4,y2];
      y6=.5[y7,y5];
      dz2=(1,0); dz4=(-1,0);
      dz5=(-1,0); dz7=(1,0);
      stroke(1,2,0,0,0);
      stroke(9,10,0,0,0);
      stroke(8,7,0,0,0);
      stroke(5,11,0,0,0);
      curve(2,3,4);
      curve(7,6,5);
      labelpos(1,2,3,4,5,6,7,8,9,10,11);
enddef;
% C by Arthur Samuel
vardef char.C =
	setwidth .7em;		% do this first; it sets the character width
	pos1(thickwidth,180);
	pos2(thickwidth,145);
	pos3(thinwidth,90);
	pos4(thinwidth,45);
	pos5(.7thickwidth,0); 
	pos6(thickwidth,0);
	pos7(thickwidth,45);
	pos8(thinwidth,90);
	pos9(thinwidth,135);
	pos10(.7thickwidth,180);
	z1=(.15w+.5thickwidth,.5capheight); dz1=(0,1);
%	z2=(.22w+.5thickwidth,.83capheight);  
	x2=.72[x3,x1]; y2=.72[y1,y3];
	z3=(.56w,capheight);  dz3=(1,0);
	z4=(.650[x3,x5],.300[y3,y5]);
	z5=(.83w,.8capheight); dz5=(1,-2);
	z6=(.15w+.5thickwidth,.5capheight); dz6=(0,-1);
%	z7=(.22w+.5thickwidth,.17capheight);  
	x7=.72[x8,x1]; y7=.72[y1,y8];
	z8=(.56w,0); dz8=(1,0);
	z9=(.650[x8,x10],.300[y8,y10]);
	z10=(.83w,.2capheight);
	curve(1,2,3); curve(3,4,5);
	curve(6,7,8); curve(8,9,10);
	labelpos(1,2,3,4,5,6,7,8,9,10); 
enddef;
% D by Dan Mills
vardef char.D =
    begingroup
%	charcd := 'D;
	save glyphwidth,lsb,rsb,cuthru,baseline;
	numeric glyphwidth,lsb,rsb,cuthrubaseline;
	baseline=0;
	 
	glyphwidth = .5em;
	lsb = .2glyphwidth;
	rsb = .1glyphwidth;
	cuthru = .02xheight;
	setwidth( lsb+glyphwidth+rsb );
 
% positions:
	% 1 is special	
	pos2(.55[thinwidth,thickwidth],45);
	pos3(thickwidth,0);
	pos4(.5[thinwidth,thickwidth],-45);
	% 5 is special
 
% coordinates:
	% 1 is special
	x2 = lsb + .7glyphwidth;	y2 = .92capheight;
	x3r = lsb + glyphwidth;		y3 = .55capheight;
	x4 = lsb + .7glyphwidth;	y4 = .15capheight;
	% 5 is special

% specials:
	x1r = lsb;			y1r = capheight;
	x1l = x1r + .85thickwidth;	y1l = y1r - thinwidth;
	z1 = .5[z1l,z1r];

	x5r = lsb;			y5r = baseline;
	x5l = x1r + .85thickwidth;	y5l = y5r + thinwidth;
	z5 = .5[z5l,z5r];

% draw straights:
	stroke(1,5,.45,.2,.2);
	
% add slopes for curves:
	dz1 = (1,0);
 	dz3 = (0,-1);
	dz5 = (-1,0);

% draw curves:
	curve(1,2,3);
	curve(3,4,5);
 
	labelpos(1,2,3,4,5);
    endgroup;
enddef;
% E by Joey Tuttle
vardef char.E =
	setwidth .63em;
	pos1(1.5thinwidth,45); pos2(1.25thinwidth,135);
	pos3(1.4thinwidth,90); pos4(.9thinwidth,90);
	pos5(1.5thinwidth,-45); pos6(1.25thinwidth,-135);
	pos7(thickwidth,0); pos8(thickwidth,0);
	x1=w-.1em; y1r=capheight; x2=.1em;	% fixed points
	y2r=y1r; x3=.95[x7,x1l]; y3=.55[y6,y2]; x4=x7; y4=y3;
	x5=x1; x6=x2; y5r=0; y6r=y5r;
	z7l=z6; z8l=z2;
	stroke(1,2,.1,.2,0); stroke(3,4,.1,.2,.2);
	stroke(5,6,.1,.2,0); stroke(7,8,.5,.15,.05);
	labelpos(1,2,3,4,5,6,7,8);
enddef;
% F by Pavel Curtis
vardef char.F =
	setwidth .6em;

	numeric len;	% clear this value for redefinition

	pos0(thickwidth, 0);
	pos1(1.1thickwidth, 0);
	pos2(len, 10);		% Length will be set below
	pos3(thinwidth, 90);
	pos4(1.5thinwidth, 120);
	pos5(thinwidth, 90);
	pos6(1.5thinwidth, 90);

	x1.l = 0.1em;		% Leave 0.1em sidebars
	x4.r = w - 0.1em;

	z0.r = (x1.r,xheight);
	y1 = capheight;
	x2.l = x1.l;  x2.r = x1.r;	% This determines len, above
	y2 = 0;
	z3.r = (x1,capheight);
	y4.r = capheight;
	z5 = (x1,y6);
	z6.r = (.9[x1.r, x4.r], xheight);

	% Vertical stroke
		dz0 = (0,1);
		stroke(0, 1, .8, .15, 0);
		stroke(2, 0, .2, .15, 0);
	% Top stroke
		stroke(3, 4, .8, .38, 0);
	% Middle stroke
		stroke(5, 6, .8, .25, .25);

	labelpos(0, 1, 2, 3, 4, 5, 6);
enddef;
% G by Jean-Luc Bonnetain
vardef char.G =
	setwidth .75em;
	pos1(.5[thinwidth,thickwidth],10); % upper righmost pt of curve
	pos2(.95[thinwidth,thickwidth],45); % intermediary pt for curve
	pos3(1.3[thinwidth,thickwidth],90); % uppermost pt
	pos4(1.3[thinwidth,thickwidth],135); % intermediary pt for curve
	pos5(1.7[thinwidth,thickwidth],180); % lefmost pt
	pos6(1.3[thinwidth,thickwidth],225); % intermediary pt for curve
	pos7(1.3[thinwidth,thickwidth],270); % lowest pt
	pos8(1.1[thinwidth,thickwidth],270); % intermediary pt for curve
	pos9(.6thinwidth/(thickwidth-thinwidth)[thinwidth,thickwidth],270);
	     % lower righmost pt of curve
	pos10(.5[thinwidth,thickwidth],10);% junction pt for 2 strokes
	pos11(.5[thinwidth,thickwidth],0); % lowest pt vertical stroke
	pos12(.5[thinwidth,thickwidth],90);
	pos13(.5[thinwidth,thickwidth],80);
	
	x1r = x10r = x12 = w - .1em ; y1 = 8/15[y3,y5];
	x2 = .707[x3,x1]; y2 = .707[y1,y3];	
	x3 = x7; y3r = 1.05capheight;
	x4 = x6; y4 = .707[y5,y3];
	x5r = .1em ; y5 = 1/2capheight;
	x6 = .707[x7,x5] ; y6 = .707[y5,y7];
	x7 = 1/2[x5,x1]; y7r = -.05capheight;
        x8 = .53[x7,x1]; y8 = .85[y91,y7]; % .707 --> .5
	y91 = 3/5[y7,y5];
	x9 = x1l + .02w; y9 = 11/16y91; 
	y10 = y7r;
	x11 = x10 ; y11 = y12 = y13 = 7/8y5;
	x13 = x12 -.25w;

 	dz1 = (0,1);
	dz3 = (-1,0);	
	dz5 = (0,-1);
	dz7 = (1,0);

	curve(1,2,3); 
	curve(3,4,5);
	curve(5,6,7);
	curve(7,8,9);
	stroke(10,11,0,0,0);
	stroke(12,13,0,0,0);
	
	labelpos(1,2,3,4,5,6,7,8,9,10,11,12,13);
	
enddef;
% H by John Hershberger
vardef char.H =

% The capital H is just not as nice as the small j.  It is not very interesting
% to the eye, and is in fact rather blocky and ugly in some of its
% incarnations.  Sigh.

lwidth := thickwidth;		% Left and right verticals are different
rwidth := .5[thinwidth,thickwidth];	% ...widths

barheight := .8[ xheight, .5capheight];	% Bar is a bit above center

setwidth .68em;			% 

% Left vertical stroke
pos1( 1.1lwidth, 10 );		% To match top of U
pos2( lwidth, 10 );		% and bottom, sort of
x1l = .1em; y1=capheight;
x2=x1; y2=0;

% Right vertical stroke
pos3( 1.1rwidth, 10 );		% Different width than lvertical
pos4( rwidth, 10 );
x3r = w-.1em; y3=capheight;
x4=x3; y4=0;

% Horizontal stroke
x5=x1; y5=barheight;
x6=x3; y6= .2[barheight, xheight];	% Gets steeper for bx.  May not be right.
pos5(1.25thinwidth, 70 );	% Thicker thin stroke!
pos6(1.25thinwidth, 80 );	% getting no wider

% Now draw it
stroke( 1, 2, .2, .05, .05 );	% Slight taper below the tops of both verticals
stroke( 3, 4, .2, .05, .05 );
stroke( 5, 6, .5, .4, .4 );	% Noticeable taper in the horizontal

labelpos(1,2,3,4,5,6);
enddef;
% I by Nori Takusue
vardef char.I =
        setwidth .5em;    % temporary value
        pos1(1.4thickwidth,5);
        pos2(thickwidth,0);
        pos3(1.4thickwidth,2.5);     % temporary value
        x1=x2=x3;                    % straight I
        z3=(.5w,0);             % the botom of 'I' is at the base line
                                % midway between left and right ends.
        y1=capheight;
        y2=.5capheight;

        %  OK now draw 'I'
        stroke(1,2,.1,.24,.24);      % temporary value.
        stroke(2,3,.9,.24,.24);      % temporary value (bottom half)

        labelpos(1,2,3);
enddef;
% J by Lynn Ruggles
vardef char.J =			% character 'J'
	setwidth .5em;		% width is 1/2 em
	pos1(thickwidth,0);
	z1=(.2w,1/4capheight);
	dz1=(0,-1);

	pos2(.7thickwidth,90);
	z2=(.5[x1,x3],.01capheight);
	dz2=(1,0);

	pos3(thickwidth,175);
	z3=(.75w,y1);
	dz3=(0,1);

	pos4(thickwidth,180);
	z4=(x3,capheight);

	curve (1,2,3);
	stroke (3,4,.5,.01,.01);

	labelpos(1,2,3,4,5);
enddef;
% K by Dikran Karagueuzian
vardef char.K =
	setwidth .65em;

	pos1(1.1thickwidth,0);	% the pen starts out slightly thick
	pos2(1.1thickwidth,0);	% the pen finishes with start thickness
	pos3(0.8thinwidth,-75);
	pos4(1.4thinwidth,0);
	pos5(1.2thickwidth,0);

	x1l=x2l=.1em;
	x3r=x1r-.1thickwidth; 	%l edge of K
	x4r=x5r=w-.1em;		%r edges of K 
	y1=y4=capheight;	%1 and 4 fully defined
	y2=y5=0;
	y3r=.5[y2,y1];
	z7=.33[z3,z4];
	pos7(0.9thickwidth,argd(z4-z3));
	stroke(1,2,.4,.175,.085);	
	stroke(4,3,.3,.175,.085);	
	stroke(5,7,.3,.175,.085);	
	labelpos(1,2,3,4,5,7);	% all positions should be listed
enddef;
% L by Bruce Leban
vardef char.L =
	setwidth 0.6em;

	bottomslant := 5;	% how much slant at bottom of vertical stroke

	x1l = 0.1em;	% left margin
	y1 = capheight;
	pos1 (1.15thickwidth, 10);	% semi-serif at top

	x2 = x1;	% more or less straight down
	y2 = 0;
	pos2 (1.05thickwidth, bottomslant);

	dz3 = (cosd bottomslant, sind bottomslant);
	z3l = 0.5[z2,z2r];	% bottom of strokes align
	pos3 (thinwidth,90);

	x4 = w-0.06em;	% right margin
	y4l = 0;	% bottom of stroke is at baseline
	pos4 (thickwidth, 85);	% grows to thickwidth

	stroke (1,2,.2,.15,.05);	% slight taper on vertical stroke
	stroke (3,4,.8,0,1-thinwidth/thickwidth);
		% extreme taper on horizontal
		% should change to compute based on thick-thin??
	labelpos (1,2,3,4);
enddef;
% M by Kwang-Chun Park
vardef char.M =  %draw letter "M"

     setwidth 0.7em;
     pos1(thinwidth,0);
     pos2(thinwidth,10);
     pos3(1.1thickwidth,0);
     pos4(1.1thickwidth,0);
     pos5(thinwidth,0);
     pos6(thinwidth,0);
     pos7(1.1thickwidth,0);
     pos8(1.1thickwidth,10);
     y1=capheight; x1=x2;
     z2l=(0.1em,0);
     y3=capheight; z4=(0.5w,0);
     x3l=x1;  
     y6=capheight; x5l=x4; y5=0;
     x6r=x7; x7r=w - 0.1em;  
     y7=capheight; 
     y8=0; x8=x7;
     stroke(1,2,0.3,0,0.1);
     stroke(3,4,0.8,0,0.1);
     stroke(5,6,0.2,0.1,0);
     stroke(7,8,0.3,0.1,0);
     labelpos(1,2,3,4,5,6,7,8);
   % end of the fourth brush

enddef;
% N by Dave Siegel
vardef char.N =
begingroup
save side_right, side_left, charwidth, slidex; 

side_right 	= .07em;	%left sidebearing.
side_left 	= .1em;		%right sidebearing.

charwidth	= .5em; %width of character.

slidex = .6thinwidth;

	setwidth side_left + charwidth + side_right;


	%DRAW THE LEFT VERTICAL STEM

	pos1(1.05thickwidth,10);
        pos2(1.15thickwidth,10);

	x1l	= side_left;	y1	= capheight;
	x2r	= x1r;		y2	= 0;

	stroke(1,2,0.7,0.1,0.1);


	%DRAW THE DIAGONAL STROKE

	pos3(1.05thickwidth,20);
       
	x3r	= side_left + charwidth;		y3	= y2;

	stroke(1,3,.5,0.1,0.1);


	%DRAW THE RIGHT VERTICAL STEM

	pos4(1.2thickwidth,20);

	x4l	= x3l;		y4	= y1;

	stroke(4,3,.5,0.1,0.1);


	%MARK LABELS

	labelpos(1,2,3,4);
endgroup
enddef;
% O by Bruce Fleischer
vardef char.O =

% the O is defined by four points, at roughly the top, bottom, left and right.
%The positions of the thick and thin points are controlled by the pen widths at
%these points, and by the angles.  The simplest case has the pens pointing
%vertically at the top and bot, and horizontally at the sides.  To slant the
%counter to the left a little, we tilt the top and bottom pens clockwise, and
%the side pens ccw. This will also tend to tilt the outside shape of the 'O' to
%right.  To make it look more upright, we slide the top point a bit to the left,
%and the bottom point a bit to the right.

	setwidth .8em;			%fairly wide - make it nice and round
	angle:=80;
	topwidth := thinwidth;
	sidewidth := thickwidth;
	topedge := .03 capheight;
	sidebar := .07em;

	%	go clockwise -- r=outside, l=inside
	%	z1=top,z2=r,z3=b,z4=l

	pos1(topwidth,angle);
	pos2(sidewidth,90-angle);
	pos3(topwidth,angle-180);
	pos4(sidewidth,-90-angle);

	y1r = capheight + topedge;
	y3r = -topedge;
	x2r = w - sidebar;
	x4r = sidebar;

	x1 = .48w; x3 = w-x1;
	y2 = .5 capheight; y4 = capheight-y2;

	dz1=-dz3=z2-z4;

	curve(1,2,3); curve(3,4,1);

	labelpos(1,2,3,4);
enddef;
% P by Ed Williams
vardef char.P =
setwidth .65em;
pos1(thickwidth,0);
pos2(1.05thickwidth,10);
pos3(thinwidth,-90);
pos4(.3[thinwidth,thickwidth],-105);
pos5(.8[thinwidth, thickwidth],-140);
pos6(thickwidth,180);
pos7(.5[thickwidth,thinwidth],150);
pos8(.2[thinwidth,thickwidth],115);
pos9(thinwidth,90);
z1l=(.1w,capheight);
y3l=capheight;
x3=x2r=x1r;y2=0;dz3=(1,.-.05);
z9=(x3+.01em,.55xheight);dz9=(-1,-0.05);
x6l=w-.15em;
y6=.95xheight;dz6=(0,-1);
x4=.5[x3,x6];y4l=.99capheight;
x8=.5[x6,x9];y8=.05[y9,y6];
x5=.7[x4,x6]; y5=.3[y4,y6];
x7=.7[x8,x6]; y7=.3[y8,y6];

stroke(1,2,.1,.1,0);
stroke(3,4,.8,0,.1);
curve(4,5,6); curve(6,7,8);
stroke(8,9,.2,0,.05);

labelpos(1,2,3,4,5,6,7,8,9);
enddef; 
% Q by Neenie Billawala
vardef char.Q=
	setwidth.8em;
				%numeric a; %numeric b;
   	pos1(.85thinwidth,90-10  );	dz1=(-1,0);
	pos2(.5[thinwidth,thickwidth],135+10  );
	pos3(1.13thickwidth,180+10  ); dz3=(0,-1);
	pos4(.5[thickwidth,thinwidth],225-10  );
	pos5(.85thinwidth,270-10  );  dz5=(1,0);
	pos6(.5[thinwidth,thickwidth],315+10  );
	pos7(1.13thickwidth,0+10  );   dz7=(0,1);
	pos8(.5[thickwidth,thinwidth],45-10  );
		x1=.5w;		y1=capheight;
		x2=.71[x1,x3];	y2=.71[y3,y1];
		x3r=.08w;	y3=.49capheight;
		x4=.71[x3,x5];  y4=.71[y5,y3];
		x5=w-x1;	y5=0;
		x6=.71[x5,x7];	y6=.71[y7,y5];
		x7=w-x3;	y7=capheight-y3;
		x8=.71[x7,x1];	y8=.71[y1,y7];
	curve(1,3,5);
	curve(5,7,1);
		%curve(1,2,3);
		%curve(3,4,5);
		%curve(5,6,7);
		%curve(7,8,1);
	labelpos(1,2,3,4,5,6,7,8);

	pos9(.7thickwidth,60);
	pos10(.85thinwidth,90);     %dz10=(z12-z9);
	pos11(.8[thinwidth,thickwidth],60);
	pos12(1.05thickwidth,60);
	pos13(thickwidth,60);
		x9l=x3l;		y9r=y5r;
		z10=(x5-.05w,y5);
		x11r=.5[x12,x10];	y11l=.5[y12l,y10l];	
		x12r=.97w;			y12r=y10l;
		z12=z13r;
	%curve(9,10,11);
	%stroke(10,13,.9,.1,0);
		dz9=(1,.4);
		%dz10=(1,0);
		dz12=(1,.7);
	curve(9,10,12);
	labelpos(9,10,11,12,13);

enddef;
% R by Renata Byl
vardef char.R =
   setwidth .75em;
   pos1(1.1thickwidth,10);
   pos2(1.05thickwidth,10);
       x1=.15em;
       y1=capheight;
       x2=.15em;
       y2=0;
   pos3(thickwidth,90);
   pos4(thickwidth,75);
   pos5(.5[thickwidth,thinwidth],40);
   pos6(.5[thickwidth,thinwidth],0);
   pos7(.5[thickwidth,thinwidth],320);
   pos8(thinwidth,285);
   pos9(thinwidth,270);
       x3r=x9=x1;
       y3r=capheight;
       
       x4r=x8r=.3em;
       y4=.95capheight;
       dz4=(1,0);
       
       x5=.71[x4,x6];  
       y5=.71[y6,y4];
       dz5=(1,-1);
       
       x6r=.45em;
       y6=.80capheight;
       dz6=(0,-1);
       
       x7=.71[x8,x6];
       y7=.71[y6,y8];
       dz7=(-1,-1);
       
       y8=.60capheight;
       dz8=(-1,0);
       
       y9=.58capheight;
       
   pos10(1.05thinwidth,45);
   pos11(1.2thickwidth,10);
       x10=.2em;
       y10=.59capheight;
       x11=.47em;
       y11=.02capheight;    

   stroke(1,2,.1,.2,0);
   stroke(3,4,0,0,0);
   curve(4,5,6);
   curve(6,7,8);
   stroke(8,9,0,0,0);
   stroke(10,11,.9,0,.2);
   labelpos(1,2,3,4,5,6,7,8,9,10,11);
enddef;   
% S by pinch-hitter Joey Tuttle
%
%
% Don, 
%	If you look at this, please don't pay too much attention to it...
%	As it turns out, after dredging up a copy of font1base, the version
%	Metafont available (-87) doesn't execute test. functions -- so I have
%	been totally unable to look at the S and I've no idea whether my
%	"tricks" will make anything other than a big mess!!
%
%	I'll try to get back in tomorrow to see if someone has fixed things up.
%
%				   Joey
%1984-5-26 21:50:00
%
vardef char.S =
	setwidth .56em;
	x1=w/2; y1=.505[0,capheight];	% the center of S
	x3=x2=x1;	% top and bottom also at center
	y3r=1.05capheight; y2l=0-.05capheight;	% centers slightly extended
	x4l=.1w; y4=2/3[y1,0];	% lower left
	x5r=.9w; y5=2/3[y1,capheight];	% upper right
	x6l=x5; y6=y4;	% center of lower curve
	x7r=x4; y7=y5; 	% center of top curve
% This character goes 5..3..7..1..6..2..4 (top to bottom)
	pos5(1.3thinwidth,45); pos3(thinwidth,90);
	pos7(1.1thinwidth,180); pos1(thickwidth,225);
	pos6(1.1thinwidth,180); pos2(thinwidth,90);
	pos4(1.3thinwidth,45);
	dz3=(-1,0);dz7=(0,-1);dz1=(3,-2);dz6=(0,-1);dz2=(-1,0);
	curve(5,3,7); curve(7,1,6); curve(6,2,4);
	labelpos(1,2,3,4,5,6,7);
enddef;		
% T by Tuan Pham
vardef char.T=
setwidth .75em;
pos1(1.5thickwidth,45);
pos2(1.2thickwidth,60);
pos3(1.2thickwidth,0);
pos4(1.1thickwidth,10);
x1=0.125em; x2=w-0.125em;
y1=y2=capheight-0.5thickwidth;
x3=x4=0.5w; y3=capheight-0.5thickwidth;
y4=0;
stroke (1,2,.2,.3,.2);
stroke (3,4,.6,.3,.2);
labelpos(1,2,3,4);
enddef;
% alternate T by Theresa-Marie Rhyne
vardef char.!=
     setwidth .75em;
     pos1(1.5thickwidth,10);
     pos2(1.1thickwidth,45);
     pos3(1.1thickwidth,45);
     pos4(1.1thickwidth,45);
     z1=(.5w,0);%y1=0;
     y2r=capheight; x1r=x2r;
     y3r=y4r=capheight; x3r=w-x4r=.1em;
     stroke(1,2,.2,.05,.05);
     stroke(3,4,.2,.05,.05);
     labelpos(1,2,3,4);
enddef;
% U by Don Knuth
vardef char.U =
	setwidth .75em;
	pos1(1.1thickwidth,10);
	pos2(thickwidth,10);
	pos3(thickwidth,40);
	pos4(.5[thickwidth,thinwidth],75);
	pos5(.9[thickwidth,thinwidth],130);
	pos6(thinwidth,180);
	pos7(1.1thinwidth,190);
	x1l=.1em; x7l=w-.1em;
	y1=y7=capheight;
	x2=x1; y2=.3capheight; dz2=(0,-1);
	x3=.75[x4,x2]; y3=.75[y2,y4];
	x4r=.5[x2r,x6r]; y4l=-.05capheight; dz4=(1,0);
	x5=.71[x4,x6]; y5=.71[y6,y4];
	x6=x7; y6=1/3capheight; dz6=(0,1);
	stroke(1,2,.2,.05,.05);
	curve(2,3,4); curve(4,5,6);
	stroke(6,7,.8,.05,.05);
	labelpos(1,2,3,4,5,6,7);
enddef;
% V by Kanchi Gopinath
vardef char.V=
	setwidth .75em;

	pos1(1.6thickwidth,10);	
	pos2(1.5thickwidth,65);
	pos3(thinwidth,0);
	pos4(1.1thinwidth,10);

	x1l=.1em;
	x4l=w-.1em;
	y1=y4=capheight;

	y2l=0;
	x2l=w/2;
	
	x3l=x2l;
	y3l=y2l;

	stroke(1,2,.1,.4,.1);
	stroke(4,3,.1,.4,.1);
	stroke(2,3,0,0,0);
	labelpos(1,2,3,4);
enddef;
% W by Stan Osborne
vardef char.W =
	setwidth .9em;			% set up our char width and variables

	pos1(2thickwidth,-30);		% position upper left vector vec(1)
	y1 = capheight;			% don't set height as tall as an "h"
	x1l = .02w;			% all the way to the left

	pos2(1.0thickwidth,-4);		% position lower left vector vec(2)
	z2 = (0.325w,0);		% at baseline, center is at .3w

	stroke(1,2,.3,.2,.1);		% left most stroke

	pos3(.5[2thickwidth,2thinwidth],-88);% position middle vector vec(3)
	z3l = (0.51w,1.07xheight);	% in the middle, top as high as "x"

	stroke(2,3,.4,.2,0);		% center left stroke

	pos4(.5[2thickwidth,2thinwidth],92);% position other middle vector vec(4)
	z4r = z3l;			% vec(4) is a 180 of vec(3)
	z4l = z3r;			%

	pos5(1.0thickwidth,0);		% position lower left vector vec(5)
	z5 = (0.70w,0);			% at baseline, ceter is at .7w

	stroke(4,5,.6,0,.1);		% center right stroke

	pos6(1.5thickwidth,30);		% position upper right vector vec(6)
	y6 = capheight;			% don't set height as tall as an "h"
	x6r = 1.0w;			% all the way to the right

	stroke(5,6,.7,.1,.2);		% right most stroke

	labelpos(1,2,3,4,5,6);		% label the vectors (1,2,3,4,5, and 6)

enddef;
% X by Alan Spragens
vardef char.X =
setwidth .8em;
pos1(1.5 thickwidth,10);
pos2(1.8 thickwidth,10);
pos3(1.5 thinwidth,10);
pos4(1.8 thinwidth,10);
y1=capheight;
x1l=.1em;
x4r=w-.1em;
y4=capheight;
y3=0;
y2=0;
x3=x1;
x2=x4;
stroke(1,2,.1,.1,.3);
stroke(3,4,.9,.2,0);
labelpos(1,2,3,4);
enddef;
% Y by Arnie Olds
vardef char.Y = setwidth .75em; pos1(1.2thickwidth,10);
pos2(1.1thickwidth,10); pos3(2thinwidth,10);
pos4(thinwidth,-5); pos5(1.5thickwidth,10);
x2=.5w; x1r=x2r; z4r=z2r; x3r=w-.05em; x5l=.03em;
y1=0; y2r=.75xheight; y3=y5=capheight; stroke(1,2,.3,.1,0);
stroke(3,4,.1,.1,0); stroke(5,2,.1,.1,0); labelpos(1,2,3,4,5);
enddef;
% Z by Malcolm Brown
% This `Z' uses the Helvetica Z as its basis.
% It also departs from the Helvetica design in the  
% hopes of creating a more interesting letter.
%
vardef char.Z =
  setwidth .8em;           % same proportion as in Helvetica
  pos1(1.5thickwidth,75);  % stroke 1 goes from 1 to 2
  pos2(.6thickwidth,90);   %  (top horizontal stroke)
%
  pos3(1.5thickwidth,-10);   % stroke 2 goes from 3 to 4
  pos4(1.5thickwidth,-10);   %  (diagonal stroke)
%
  pos5(.65thickwidth,90);   % stroke 3 goes from 5 to 6
  pos6(1.5thickwidth,75);  %  (bottom horizontal)
% 
    x1=.125w;              % determing position 1
    y1r = capheight;           
%
    x2=w - x1;             % determines position 2
    y2r = capheight;
%
    x3r=x2l;               % positions 2 and 3 share a point
    y3r=y2l;            
%
    x4l=x5r;               % positions 4 and 5 share a point
    y4l=y5r;              
%
    x5=.5x1;               % determines 5
    y5l=0;             
%
    x6=w-x5;               % determines 6
    y6l=0;
%  %
  stroke(1,2,.3,.6,0);          % top horizontal stroke 
  stroke(5,6,.7,0,.6);          % bottom horizontal stroke
  stroke(3,4,0,0,0);            % diagonal stroke
%
  labelpos(1,2,3,4,5,6);
enddef;
% a by Ann Lasko-Harvill
vardef char.a=setwidth .5em;%       NOTE TO GRADER: THIS ISN'T AS
	pos1(1.1thickwidth,10);%    FINISHED AS I WOULD LIKE IT.
	x1l=.12em;     
	y1l=.75xheight;
	dz1=(0.2,1);
	pos2(.5[1.1thickwidth,.75thinwidth],-30);
	x2=.24[x1,x3];
	y2=.76[y1,y3];
%	dz2=(1,1);
	pos3(.75thinwidth,-90);
	x3=.27em;
	y3=xheight;
	dz3=(1,0);
	pos4(.25[thickwidth,.75thinwidth],-155);  				
	x4l=.75[x3l,x5l];
	y4l=.75[y5l,y3l];
	dz4=(1,-1);
	pos5(thickwidth,-180);
	x5=.42em;
	y5=y1;
	dz5=(0,-1);

	pos6(thickwidth,-180);
	x6=x5;
	y6=y7l;
	dz6=(0,-1);
	pos7(1.2thickwidth,-135);
	x7l=x6l;
	y7r=0;
	dz7=(1,-1);
	pos8(1.5thickwidth,-135);
	x8r=x6l;
	y8l=y6;
	dz8=(1,0);
	pos9(thinwidth,-90);
	x9=x5r+1;
	y9=.65xheight;
	dz9=(-1,-.05);
	pos10(.5[thickwidth,thinwidth],-45);
	x10=.2[x11,x9];
	y10=.2[y9,y11];
	dz10=(-1,-1);
	pos11(thickwidth,0);
	x11=.5[x1l,x1];
	y11=.45[y10,y12];
	dz11=(0,-1);
	pos12(.35[thickwidth, thinwidth],55);
	x12=.4[x11,x13];
	y12l=-.01;
	dz12=(1,0);
	pos13(thinwidth,90);
	x13=x6r+1;
	y13=y6;
	dz13=(1,1);
	curve(1,2,3);curve(3,4,5);
	stroke(5,6,.5,0,.05);curve(6,7,8);
	curve(9,10,11);curve(11,12,13);
	labelpos(1,2,3,4,5,13,6,7,8,9,10,11,12);
enddef;
% b by Dave Siegel
vardef char.b =
begingroup
save side_right, side_left, charwidth, slidex; 
save zero_width, thinner_width, half_width, corner_width; 

side_right 	= .07em;	%left sidebearing.
side_left 	= .1em;		%right sidebearing.

charwidth	= .4em; %width of character.



zero_width	= .01thinwidth;	
thinner_width	= .6thinwidth;
half_width	= .9thinwidth;
corner_width	= .6[thinwidth,thickwidth]; 

slidex = .6thinwidth;


	setwidth side_left + charwidth + side_right;

	%DEFINE HEADINGS AT ALL POINTS ON CURVES

	dz3	= (0,-1);
	dz4	= (1,-1);
	dz5	= (1,0);
	dz6	= (1,1);
	dz7	= (0,1);
	dz8	= (-1,1);
	dz9	= (-1,0);
	dz10	= (-1,-1);
	dz11	= (0,-1);
	
	%DEFINE PEN RELATIONSHIPS FOR BOTH STROKES

	pos1(1.5thickwidth,45);
        pos2(1.05thickwidth,10);
	pos3(zero_width,0);
	pos4(thinner_width,45);
	pos5(.9half_width,90);
	pos6(corner_width,150);
	pos7(thickwidth,180);
	pos8(.9corner_width,225);
	pos9(half_width,270);
	pos10(thinner_width,315);
	pos11(zero_width,0);

	%DEFINE COORDINATES
	x1r	= x2r;			y1	= hheight;
	x2l	= side_left;		y2	= 0;
	x3	= x2 + slidex + .2slidex;y3	= .32xheight;
	x4	= .22[x3,x5];		y4	= .28[y5,y3];
	x5l	= .4[x3,x7];		y5	= y2r;	
	x6	= .65[x5,x7];		y6	= .18[y5,y7];
	x7r	= charwidth + slidex;	y7	= .5[y5,y9];
	x8	= .65[x9,x7];		y8	= .18[y9,y7];
	x9	= .45[x3,x7];		y9	= .98[0,xheight];
	x10	= .3[x11,x9];		y10	= .2[y9,y11];
	x11	= x3;			y11	= .5xheight;


	%DRAW STEM

	stroke(1,2,0.1,0.2,0);

	%DRAW BOWL

	curve(3,4,5);
	curve(5,6,7);
	curve(7,8,9);
	curve(9,10,11);
	curve(11,3,3);

	%MARK LABELS

	labelpos(1,2,3,4,5,6,7,8,9,10,11);
endgroup
enddef;
% c by Alan Spragens
vardef char.c =
setwidth .5em;
pos1(thickwidth,90);
pos2(.8[thickwidth,thinwidth],90);
pos3(1.1 thickwidth,180);
pos4(.2[thickwidth,thinwidth],220);
pos5(1.1thickwidth,260);
z1=(w-.075em,.85 xheight);
z2=(.5w,xheight);
y3=.5 xheight;
x3l=.1em;
x4=.5w;
y4=0;
x5=w-.05em;
y5=.2xheight;
dz2=(-1,0);dz3=(0,-1);dz4=(1,0);
curve(1,2,3);curve(3,4,5);
labelpos(1,2,3,4,5);
enddef;
% d by Jean-Luc Bonnetain
vardef char.d =
	setwidth .6em;
	pos1(1.5[thinwidth,thickwidth],45); % top of stem
	pos2(.7[thinwidth,thickwidth],10); % bottom of stem
	pos3(.9(thinwidth/(thickwidth - thinwidth))[thinwidth,thickwidth],90); 
	     % junction upper part of bowl / stem
	     % this is a trick here, to make sure that the junction does not
	     % become too black with bold versions.
% but actually the formula gives 1.9thinwidth in all cases!
	     % in the normal version, thindwidth/(thickwidth-thinwidth) = 11/4
	     % while in the bolder version the value is 14/10 < 11/4
	     % this way the width of the curve when it joins the stem will
	     % be relatively smaller in bold version (less far of the way from
	     % thinwidth and thickwidth).
	     % there is a small problem due to the digitization process here:
	     % in the small size / 3 together test, the bold extended version
	     % has its stem widened just after the upper junction of the bowl
	     % and the stem, which creates an ugly white recess (this does not
	     % appear in the large size tests). Since this depends on the size
	     % on the letter and on the digitizing algorithm, a solution for
	     % one size will look terrible at another one, so i haven't tried
	     % to fix that problem (i don't know what will happen in the actual
	     % size that will be used for typesetting text with font1(version
	     % -1000) ).

	pos4(.8[thinwidth,thickwidth],90); % uppermost pt upper part bowl
	pos5(thickwidth,180); % leftmost pt of bowl
	pos6(.8[thinwidth,thickwidth],270); % lowermost pt bottom part bowl
	pos7(.4(thinwidth/(thickwidth - thinwidth))[thinwidth,thickwidth],270); 
	     % junction lower part of bowl / stem

	x1r = x2r ; y1 = hheight; 
	z2r = (w - .1em , 0);
	x3 = x2l + .05w; y3 = 7.55/10y4 ; 
	x4 = x6 = 1/2[x2,x5] ; y4 = xheight;
	x5r = .1em; y5 = 1/2y4;
	y6r = -.02capheight;
        x7 = x2l + .02w; y7 = 3/10y4;
	
	dz3 = (-1,50); % avoids possible loop at z3l
        dz4 = (-1,0);
	dz5 = (0,-1);
	dz6 = (1,0);
	
	stroke(1,2,.1,.2,0);
	curve(3,4,5);
	curve(5,6,7);

	labelpos(1,2,3,4,5,6,7);

enddef;
% e by Dan Mills
vardef char.e =
    begingroup
%	charcd := 'e;
	save glyphwidth,lsb,rsb,cuthru;
	numeric glyphwidth,lsb,rsb,cuthru;
	 
	glyphwidth = .45em;
	lsb = rsb = .2glyphwidth;
	cuthru = .02xheight;
	setwidth( lsb+glyphwidth+rsb );

% positions: 
	pos1(thinwidth,-90);
	pos2(.1[thinwidth,thickwidth],-100);
	pos3(thickwidth,-180);
	pos4(thinwidth,-270);
		% 5 is special
	pos6(thinwidth,-90);
 
% coordinates:
	x1 = lsb + .97glyphwidth;	y1 = .2xheight;
	x2 = lsb + .55glyphwidth;	y2r = -cuthru;
	x3r = lsb;			y3 = y6;
	x4 = lsb + .5glyphwidth;	y4r = xheight + cuthru;
		% 5 is special
	x6 = x3;			y6 = .52 xheight;
	 
% specials:
	x5r = lsb + glyphwidth;		y5r = y6r;
	x5l = x5r - thickwidth;		y5l = y6l;
	x5 = .5[x5l,x5r];		y5 = .5[y5l,y5r];
 
	dz1 = z2 - z1 + (0,1.5(y2-y1));
	dz2 = (-1,0);
	dz3 = (0,1);
	dz4 = (1,0);
 
% draw straights:
	stroke(5,6,0,0,0);

% add a slope for the curves:
	dz5 = .999[(z5-z4),(0,-1)];

% draw curves:
	curve(1,2,3);
	curve(3,4,5);
 
	labelpos(1,2,3,4,5,6);
    endgroup;
enddef;
% f by Malcolm Brown
vardef char.f =
  setwidth .35em;                  % roughly the same as Helvetica f
  pos1(1.05thickwidth,190);        % R's start on the left!
  pos2(.15[thickwidth,thinwidth],180);
%
  pos5(.80[thickwidth,thinwidth],95); 
  pos7(.75[thickwidth,thinwidth],45);
%
  pos8(1.1thinwidth,80);           % stroke 8 to 9 is the crossbar
  pos9(thinwidth,80);
%
  y1=0;                % determines 1
  x1=.35w;
%
  x2=x1;               % determines 2
  y2=xheight;
  dz2=(0,1);           % heading north  
%
  y5=.33[hheight,capheight];
  x5=.2[x2,x7];
%
  y7=.125[capheight,xheight];
  x7=.82w;
%
%  Crossbar
%
  y8r=xheight;         % determines 8
  x8=.33[0,x2r];
%
  y9r=xheight;         % determines 9
  x9=w-1.67x8;
%
  stroke(1,2,0,0,0);
  curve(2,5,7);
  stroke(8,9,0,0,0);
%
  labelpos(1,2,5,7,8,9);
enddef;
% g by Bruce Leban

def down  = (0,-1) enddef;
def up    = (0,1)  enddef;
def right = (1,0)  enddef;
def left  = (-1,0) enddef;
vardef circle@# (expr xc,yc,xrad,yrad,adjustpen,tilt,pentilt) =

	z[@#]   = (xc,yc);
	z[@#+1] = (xc+xrad*cosd (180-tilt),	yc+yrad*sind (180-tilt));
	z[@#+2] = (xc+xrad*cosd  (90-tilt),	yc+yrad*sind  (90-tilt));
	z[@#+3] = (xc+xrad*cosd   (0-tilt),	yc+yrad*sind   (0-tilt));
	z[@#+4] = (xc+xrad*cosd (-90-tilt),	yc+yrad*sind (-90-tilt));

	dz[@#+1] = z[@#+2] - z[@#+4];
	dz[@#+3] = z[@#+4] - z[@#+2];

	pos[@#+1] (adjustpen*thinwidth,	180-tilt+pentilt);
	pos[@#+2] (adjustpen*thickwidth, 90-tilt-pentilt);
	pos[@#+3] (adjustpen*thinwidth,	  0-tilt+pentilt);
	pos[@#+4] (adjustpen*thickwidth,-90-tilt-pentilt);

	curve ([@#+1],[@#+2],[@#+3]);
	curve ([@#+3],[@#+4],[@#+1]);
enddef;

vardef char.g =
	setwidth 0.5em;

	pentilt := 20;	% degree of "tilt" for pens

	circle10 (
		.47w,.55xheight,	% center of circle
		(w - 0.22em)/2,		% "radius" in x direction
		.4xheight, 		%          and y direction
		1,			% pen width multiplier
		0,			% don't rotate control points
		pentilt
		);

	xadjust := 1/3thinwidth;	% move the down stroke over xadjust

	% top of downstroke 
	x2r = x13r + xadjust;
	y2  = xheight;
	pos2 (1.2thickwidth, 45);

	% bottom of down stroke and right side of descender
	x3r = x2r;		% position below pen 2
	y3  = .10xheight;	% just above base line
	pos3 (.5[thinwidth,thickwidth],pentilt);

	dz3 = down;	% going down at this point

	% bottom of descender
	x4  = .65[x5,x3];		% closer to right side of g
	y4r = -ydepth;			% positioned at -ydepth
	pos4 (thinwidth,-90+pentilt);

	% left side of descender
	x5r = x11r;		% x5r and x11r are really on left side
	y5  = .8[-ydepth,0];	% ends below base line
	pos5 (thickwidth,180+pentilt);

	stroke (2,3,0.5,0.5,0);

	curve (3,4,5);

	labelpos (2,3,4,5,10,11,12,13,14);
enddef;

% I had hoped to do a tradional style g, but I didn't have enough time.
%
% vardef char.var.g = etc
% h by Arnie Olds
vardef char.h = setwidth .6em; pos1(1.5thickwidth,45);
pos2(1.05thickwidth,10); x2l=.1em; x8l=w-.1em;
x1=x2; x3r=x2r; x7=x8; y1=hheight; y2=0; y8=0; y3=.55xheight;
y7=.7xheight; pos3(.8thinwidth,-45);
pos4(thinwidth,-55);
pos5(.25[thickwidth,thinwidth],-110); pos6(thickwidth,-150);
pos7(thickwidth,-170); pos8(1.05thickwidth,-170);
x5=.75[x3,x7]; y5l=1.05xheight; x4=.5[x3,x5]; y4=.85[y3,y5];
x6=.75[x5,x7]; y6=.33[y5,y7]; stroke(1,2,.1,.2,0);
curve(3,4,5); curve(5,6,7); dz3=(0,1); dz7=(0,-1);
dz5=(1,0); stroke(7,8,.3,0,.1); labelpos(1,2,3,4,5,6,7,8); enddef;
% i by Bruce Fleischer
vardef char.i =
	setwidth 1/3em;			%same width as 'l'
	botangle:=10;			%same angle at bottom of stroke
	pos1(1.15thickwidth, botangle);	%stroke of 'i' very much like 'l',
	pos2(1.05thickwidth, botangle);	%only top has same angle as bottom
	z2=(.5w,0);
	y1=xheight;
	x1r=x2r;
	stroke(1, 2, .2, .2, 0);

	pos3(1.15thickwidth, botangle);	%top and bottom of dot are parallel to
	pos4(1.15thickwidth, botangle);	%and same length as top of stroke
	.4[x3r,x4r] = x2r;		%keep dot from falling off to the left
	x3r=x4r-.07(hheight-xheight);	%slant sides of dot
	y4=.25[xheight,hheight];	%space dot between xheight and hheight
	y3=.55[xheight,hheight];
	stroke(3,4, 0, 0, 0);		%make it a parallelogram

	labelpos(1,2,3,4);
enddef;
% j by John Hershberger
vardef char.j =

lspace := .08em;	% How much space at left of j; adjust to look right
jwidth := .34em + lspace;	% Total width of character and whitespace
lcurve := .71;		% Fairly round curve at end of bottom loop
rcurve := .73;		% Squarish round curve at start of bottom loop

% Dot parameters  should be coordinated with 'i' dot.
dotdy := .4*(hheight-xheight);	% Height of dot
dotwidth := 1.3thickwidth;	% Width of dot
lswell := -.1;			% Reverse taper for left of dot
rswell := -.05;			% Reverse taper for right of dot
eps := -.3rswell*thickwidth;	% Amount to move dot left to make it look
				% more centered.  Try to make right side of
				% j's vertical stroke ~ bisect dot's swell.
				% We're at the level of single pixels, so it's
				% hard to make it right.

setwidth jwidth;
pos1( 1.5thickwidth, 45 );	% As in 'l'
pos2( thickwidth, 10 );
pos3( .7[thinwidth, thickwidth], -35 );
pos4( .3[thinwidth, thickwidth], -80 );
pos5( .15[thinwidth, thickwidth], -120 );
pos6( thinwidth, -135 );	% No slight flare at the end of j stroke
				% Slope matches top of j stroke--unimportant?
y1=xheight; x1r = w-.1em;	% Right side straight and .1 em in.
				% It would be tempting to put the top of the
				% stroke a little bit to the left so that the
				% "j" doesn't look like it's falling over
				% backward.  (See next line.)
fudge:= .005em;			% This was originally used to move the bottom
				% of the stroke right to achieve an equivalent
				% effect.  Setting fudge to .005em works fairly
				% nicely, except that the pixel-jagged right
				% edge of the
				% stroke is then a little disconcerting.
x2r=x1r+fudge; y2r = .3[-ydepth,xheight];	% Top of curve
dz2=(0,-1);			% Heading down
x3= rcurve[x4,x2]; y3 = rcurve[y2,y4];	% See below
y4r=-ydepth -.05capheight; x4l= .5[x6l,x2l];	% Inside of curve is flat in center
dz4=(-1,0);			% Heading left
x5 = lcurve[x4,x6]; y5 = lcurve[y6,y4];
x6r = lspace; y6l = .8[-ydepth, y2r];		% Pen is flipped, curve ends just
				% below where it starts on other side.

% Dot definition
x7r = x1r-eps; y7 = y1+ 1.7dotdy ;	% Start 1.7dotdy above j-stroke
x8r = x7r-eps; y8 = y7 - dotdy;		% And come down dotdy.
pos7( dotwidth, 45 );		% Same slope as top of stroke
pos8( dotwidth, 45 );		% Same slope as top of stroke

% Draw the thing
stroke( 1, 2, .1, .2, 0 );	% To match top of 'l'
curve(2,3,4); curve(4,5,6);

stroke( 7, 8, .5, lswell, rswell);	% Swell out a little on the dot

labelpos( 1,2,3,4,5,6,7,8 );
enddef;
% k by Renata Byl
vardef char.k =
   setwidth .6em;
   pos1(1.5thickwidth,45);
   pos2(1.05thickwidth,10);
       z2=(.1667em,0);
       y1=hheight;  x1r=x2r;
   pos3(1.5thickwidth,90);
   pos4(1.05thickwidth,90);
       y3=.5hheight;
       y4=.75hheight;
       z3=(x2r,y3);
       z4=(.45em,y4);
   pos5(1.00thickwidth,45);
   pos6(1.05thickwidth,10);
       y5=.5hheight;
       y6=.02capheight;
       z5=(.25em,y5);
       z6=(.45em,y6);
           
   stroke(1,2,.1,.2,0);
   stroke(3,4,.9,0,.2);
   stroke(5,6,.9,.2,0);
   labelpos(1,2,3,4,5,6);
enddef;
% l by Don Knuth
vardef char.l =
	setwidth 1/3em;
	pos1(1.5thickwidth,45);
	pos2(1.05thickwidth,10);
	z2=(.5w,0);
	y1=hheight; x1r=x2r;
	stroke(1,2,.1,.2,0);
	labelpos(1,2);
enddef;
% m by Dikran Karagueuzian
vardef char.m =
	setwidth .95em;

	pos1(1.1thickwidth,0);	% the pen starts out slightly thick
	pos2(1.1thickwidth,0);	% the pen finishes with start thickness
	pos7(1.1thickwidth,180);
	pos3(1.1thickwidth,180);
	pos4(1.1thickwidth,0);
	pos5(1.1thickwidth,0);
	pos11(0.8thickwidth,0);
	pos21(1.0thinwidth,-90);
	pos22(1.0thinwidth,90);

	x1l=x2l=x11l-.1thickwidth=.1em;
	x3=x7=x17=.5[x1,x4];
	x4r=x5r=w-.1em;	
	y1=xheight;
	y4=y7=y11=.60xheight;
	y2=y5=y3=0;
	x21=.5[x1,x7]; x22=.5[x7,x4];
	y21l=y22r=xheight;
	dz11=dz4=(0,1); dz7=(0,-1);
	stroke(1,2,.4,.175,.085);	
	stroke(5,4,.3,.175,.085);	
	stroke(7,3,.3,.175,.085);	
	curve(11,21,7);
  	curve(4,22,7);

	labelpos(1,2,3,4,5,7,11,21,22);	% all positions should be listed
enddef;
% n by Lynn Ruggles
vardef char.n = 		% character 'n'
	setwidth .6em;		% width is slightly larger than 1/2 em
	x1=.25w; y1=xheight;	
	pos1(2thickwidth,0);	% pen is thick and 0 degree angle

	x2=.3w; y2=y1;
	pos2(thickwidth,15);	% pen is thick and 15 degree angle

	pos3(1.2thickwidth,0);	% ditto
	x3=.3w; y3=0;

	x4=x3;	 y4=2/3xheight-thinwidth;
	pos4(thickwidth,75);
	dz4=(10,11);

	x5=.6w; y5=xheight-.5thinwidth;
	pos5(thickwidth,60);
	dz5=(1,0);

	x6=.8w; y6=y4;
	pos6(1.1thickwidth,30);
	dz6=(0,-1);

	pos7(1.5thickwidth,0);
	x7=.85w; y7=y3;

%	stroke (1,2,.2,0,.30;
	stroke (1,3,.2,.8,0);
	curve (4,5,6);
	stroke (6,7,.7,0,.5);
	labelpos(1,2,3,4,5,6,7);
enddef;
% o by Stan Osborne
vardef char.o =
	setwidth .52em;			% make the "o" 60% of an em

	mythin = thinwidth;
	mymid1 = .27[thinwidth,thickwidth];
	mymid2 = .75[thinwidth,thickwidth];
	mythick = thickwidth;

	pos1(mythin,-92);		% vertical and thin for vec(1)
	z1l = (.5w,.99xheight);		% in the middle and top at xheight

	pos2(mymid1,-48);		% getting flatter for vec(2)
	x2l = .27w;			% moved over to the left
	y2l = .91y1l;			% it is  near xheight

	pos3(mythick,0);		% flat and thicker for vec(3)
	z3 = (.22w,.65y1l);		% moved to the left and down

	curve(1,2,3);			% draw the upper left curve

	pos4(mythick,0);		% same as vec(3) for vec(4)
	z4 = (x3,.35y1l);		% symetrical with z3

	stroke(3,4,.5,-.1,.1);		% left center stroke

	pos5(mymid1,45);		% lifting up for vec(5)
	x5l = x2l;			% moved over to the right
	y5l = y1l-y2l;			% it is near the bottom

	pos6(mythin,88);		% vertical and thin for vec(6)
	z6l = (.5w,0);			% in the middle and bottom at baseline

	curve(4,5,6);			% draw the lower left curve

	pos7(mythin,-92);		% vec(7) is a 180 of vec(6)
	z7r = z6l;			% must match with vec(6)

	pos8(mymid1,-50);		% lifting up for veck(8)
	x8r = .97w-x5l;			% mirror image of vec(5)
	y8r = y5l;			% same height

	pos9(mymid2,0);			% flat and thicker for vec(9)
	z9 = (.97w-x3,y4);		% mirror of vec(4)

	curve(7,8,9);			% draw the lower right curve

	pos10(mymid2,0);		% same as vec(9)
	z10 = (x9,y3);			% mirror of vec(3)

	stroke(9,10,.5,.1,-.1);		% right center stroke

	pos11(mymid1,48);		% lifting up for vec(11)
	x11r = x8r;			% same as vec(8)
	y11r = y2l;			% same height as vec(2)

	pos12(mythin,88);		% vertical and thicker for vec(12)
	x12r = x1l;			% a 180 of vec(1)
	y12r = y1l;			% same height as vec(1)

	curve(10,11,12);		% draw the upper right curve

	labelpos(1,2,3,4,5,6,7,8,9,10,11,12);	% label the vectors

enddef;
% p by Theresa-Marie Rhyne
vardef char.p=
     setwidth .55em;
     pos1(1.5thickwidth,45);
     pos2(1.05thickwidth,10);
     pos3(.9thinwidth,80);
     pos4(thinwidth,80);
     pos5(thinwidth,135);
     pos6(thickwidth,180);
     pos7(thickwidth,215);
     pos8(thinwidth,250);
     pos9(.5thinwidth,270);
     z2=(.1em,xheight);
     y1=-ydepth; 
     x1r=x2r; x3=x9r=.1em;
     y3=.1xheight; y9=.9xheight;
     y4=0; x4=x8=.4w;
     dz4=(1,0);
     
     y8=xheight;
         x6r=.7w;  y6l=.5xheight;
     dz6=(0,1);
     x5r=.75[x4r,x6r]; y5r=.75[y6r,y4r];
     x7=.75[x8,x6]; y7=.75[y6,y8];
   
     dz8=(-1,0);
     stroke(1,2,.1,.2,0);
     stroke(3,4,.5,-.4,.2);
     curve(4,5,6); curve(6,7,8);
     stroke(8,9,.5,-.4,.2);
     labelpos(1,2,3,4,5,6,7,8,9);
enddef; 
% q by Pavel Curtis
vardef char.q =
%	setwidth .5em;
	setwidth .6em;
	cw := .75[thinwidth,thickwidth];	% Corner pen width
	cp := .72;			% Corner positioning coeff.
	

	pos1(1.5thickwidth, 45);
	pos2(thickwidth, 0);
	pos3(cw, 45);
	pos4(thinwidth, 90);
	pos5(cw, 135);
	pos6(thickwidth, 180);
	pos7(cw, 225);
	pos8(thinwidth, 270);
	pos9(cw, 315);

	x6.r = 0.1em;		% Again .1em sidebars
	x2.r = w - 0.1em;

	x1.l = x2.l;
	y1 = -ydepth;
	y2 = xheight/2;
	x4 = 1/2[x6, x2];
	y4.r = 1.05xheight;
	y6 = y2;
	x8 = x4;
	y8.r = -.05xheight;
	x3 = x9 = cp[x4, x2];
	x5 = x7 = cp[x4, x6];
	y3 = y5 = cp[y2, y4];
	y7 = y9 = cp[y2, y8];
	dz2 = (0,1);
	dz4 = (-1,0);
	dz6 = (0,-1);
	dz8 = (1,0);

	% Stem
		stroke(1, 2, .1, 0, .2);
	% Bowl
		curve(2, 3, 4);
		curve(4, 5, 6);
		curve(6, 7, 8);
		curve(8, 9, 2);

	labelpos(1, 2, 3, 4, 5, 6, 7, 8, 9);
enddef;
% r by Arthur Samuel
vardef char.r =
	setwidth .5em;		% do this first; it sets the character width
	pos1(1.5thickwidth,45); % the pen is "thicker than thick" at the top
	pos2(1.05thickwidth,10); % and also slightly flared at the bottom
	pos3(.8thinwidth,90); 	% The starting place for the right branch
	pos4(.65[.8thinwidth,thickwidth],90); 
	pos5(1.2thickwidth,90);	 % Joining point of two curves
	pos6(.85[thinwidth,thickwidth],45);   % at point with slope for line 5,7
	z2=(.2w+.5thickwidth,0);
	y1=xheight; x1r=x2r; % at the hheight, aligned at the right
	x3=x2+.5thickwidth; 	y3=.65xheight; dz3=(1,2);
	x4=.5[x3,x5]; y4=.83[y3,y5]; 
	z5=(.8w,xheight-.3thickwidth); dz5=(1,0);


	stroke(1,2,.1,.2,0); % taper at the left but not the right
	curve(3,4,5);
	labelpos(1,2,3,4,5);
enddef;
% s by Kwang-Chun Park
vardef char.s =

      setwidth 0.4em;
      pos1(thickwidth,-100);
      pos2(.5[thickwidth,thinwidth],-95);
      pos3(thinwidth,-90);
      pos4(.375[thinwidth,thickwidth],-40);
      pos5(.75[thinwidth,thickwidth],0);
      pos6(thickwidth,45);
      pos7(1.1thickwidth,75);
      pos8(thickwidth,45);
      pos9(.75[thinwidth,thickwidth],0);
      pos10(.375[thinwidth,thickwidth],-40);
      pos11(thinwidth,-90);
      pos12(.5[thinwidth,thickwidth],-95);
      pos13(thickwidth,-100);

      y3l=1.05xheight; y1=0.85xheight;
      y5=.75xheight; y7= 0.5xheight; y9= 0.25xheight;
      y11l= 0.05xheight; y13=y9;  
      x3 = 0.5w; x1r=w-.05em;
      x5l=x3-0.5w; x7 = x3; x9r = w;
      x11 = x3; x13= x5l;
      
      x2l = 0.71[x3l,x1l];
      y2l = 0.71[y1l,y3l];
      dz3= (-1,0); 
      x4l = 0.75[x3l,x5l];
      y4l = 0.75[y5l,y3l];
      dz5=(0,-1);
      x6 = 0.29[x5,x7];
      y6 = 0.29[y7,y5];
	dz7=(1,0);
      x8 = 0.29[x9,x7];
      y8 = 0.71[y9,y7];
      dz9=(0,-1);
      x10= 0.75[x11,x9];
      y10= 0.25[y11,y9];
      dz11=(-1,0);
      x12= 0.35[x13,x11];
      y12= 0.29[y11,y13];
    
      curve(1,2,3); curve(3,4,5);
      curve(5,6,7); curve(7,8,9);
      curve(9,10,11); curve(11,12,13);
      labelpos(1,2,3,4,5,6,7,8,9,10,11,12,13);
      
enddef;
% t by Tuan Pham
vardef char.t=
setwidth .6em;
pos1(1.1thickwidth,45);
pos2(thickwidth,10);
pos3(thickwidth,40);
pos4(.5[thickwidth,thinwidth],75);
pos5(.9[thickwidth,thinwidth],130);
pos6(thinwidth,200);
pos7(1.2thinwidth,80);
pos8(1.5thinwidth,45);
x1l=0.15em;y1=hheight;
x2=x1;y2=0.25xheight;dz2=(0,-1);
x3=.71[x4,x2];y3=.71[y2,y4];
x4r=.5[x2r,x6r];y4l=-.05xheight;dz4=(1,0);
x5=.7[x4,x6];y5=.7[y6,y4];
x6l=w-0.15em;y6=0.3xheight;
x7=.1em;x8=w-.18em;
y7l=y8l=xheight;
stroke(1,2,.2,.05,.05);
curve(2,3,4);curve(4,5,6);
stroke(7,8,.8,0,.3);
labelpos(1,2,3,4,5,6,7,8);
enddef;
% u by Nori Takusue
vardef char.u =
        setwidth .50em;            %temp value
        pos1(1.05thickwidth,10);
        pos2(thickwidth,10);
        pos3(.65[thickwidth,thinwidth],40);
        pos4(.80[thickwidth,thinwidth],75);
        pos5(.95[thickwidth,thinwidth],130);
        pos6(thickwidth,180);
        pos7(thickwidth,190);
        pos8(1.1thickwidth,190);
        %  coordinate information

        x1l=.075em;
        x7=w-x1l;
        y1=y7=xheight;
        x1=x2;
        x6=x7;x6r=x8r;
       
        % left curve
        y2=.30xheight; dz2=(0,-1);    % going down at z2
        x3=.75[x4,x2]; y3=.75[y2,y4];
        x4r=.5[x2r,x6r];  y4l=-.05xheight;
        dz4=(1,0);      % rightward

        % right curve
        x5=.70[x4,x6];  y5=.3[y4,y6];
        y6=.33xheight;  dz6=(0,1);      % upward at z6
        y8=0;
   % now draw the line
        stroke(1,2,.3,.05,0);     %  temp values.
        curve(2,3,4);

        curve(4,5,6);
        stroke(6,7,.7,0,.05);
        dy6:=-1;
        stroke(6,8,.5,.05,.05);
        
      labelpos(1,2,3,4,5,6,7,8);
enddef;
% v by Ed Williams
vardef char.v = 
setwidth .55em;
pos1(1.1thickwidth,05); z1=(.2w,xheight);
pos5(1.3thinwidth, -170); z5=(.85w,xheight);
pos3(1.8thickwidth,87); x3l=.5[x1,x5]; y3l=-.02w;
pos2(.9thickwidth, 25);z2=.5[z1,z3];
pos4(1.1thinwidth,155); z4=.5[z5,z3];

stroke (1,2,.2,.05,.05); stroke(2,3,.8,0,0);
stroke(5,4,.2,.05,.05); stroke(4,3,.8,.02,0);
labelpos(1,2,3,4,5);
enddef;
% w by Joey Tuttle
vardef char.w =
	setwidth .74em;	% this from "average character width table" TSS
	pos1(1.5thickwidth,30);
	pos2(1.05thickwidth,10);
	pos21(thinwidth,10);
	pos3(thinwidth,30);
	pos31(thickwidth,30);	
	pos4(1.05thickwidth,10);
	pos41(thinwidth,10);
	pos5(1.5thinwidth,30);
	y1=xheight; x1l=.1em; x5r=w-.1em;	% some fixed points
	x2=.45[x1,x3]; x3=.5[x1,x5]; x4=.45[x3,x5];	% relating corners
	z21r=z2r; z31l=z3l; z41r=z4r;	% tie corners of strokes
	y31r=y1; y5=y1;		% the tops of the strokes
	y2=0; y4=y2;	% the baseline
	stroke(1,2,.1,.2,0);
	stroke(21,3,.2,.0,.2);
	stroke(31,4,.1,.2,.2);
	stroke(41,5,.9,.2,0);
	labelpos(1,21,2,31,3,41,4,5);
enddef;
% x by William Burley
vardef char.x =
      setwidth .45em;
      pos1(1.4thickwidth,0);
      pos2(.9thickwidth,45);
      pos3(1.4thickwidth,0);
      pos4(1.4thinwidth,0);
      pos5(.9thinwidth,-45);
      pos6(1.4thinwidth,0);
      x1l=x4l=.1w;
      x3r=x6r=.9w;
      y1=y6=xheight;
      y3=y4=0;
      x2=x5=.5w;
      y2=y5=.5xheight;
      stroke(1,2,.15,0,.25);
      stroke(2,3,.85,.25,0);
      stroke(4,5,.15,0,.25);
      stroke(5,6,.85,.25,0);
      labelpos(1,2,3,4,5,6);
enddef;
% y by Neenie Billawala
vardef char.y=
     setwidth .57em;
     pos1(1.4thickwidth,15);   dz2=z2r-z1r;
     pos2(1.25thickwidth,60);
     pos3(1.65thinwidth,15);
     pos4(.85thinwidth,-45);
     pos5(1.65thinwidth,10);
     pos6(1.23thickwidth,50);
     pos7(1.5thinwidth,15);
     pos8(1.4thinwidth,0);     
       y1=y3=xheight;
       z2=z4; y4r=0; x4l=.5w;
       numeric a;
       y5=-ydepth;
       x1l=.07w;
       x3r=w-.09x1l-.02em;
       z5=a[z3,z4];
       dz4=(z5-z3);       
       z6r=.02[z1r,z2r];  
         dz6=z2l-z1l; curve(1,6,2); 
       %z7r=.08[z3r,z4r];  
         %dz7=z4l-z3l; curve(3,7,4);      
       %z8l=.92[z3l,z4l];
         %dz8=z4r-z3r; %curve(4,8,5);
       stroke(3,4,.2,.4,0);
       stroke(4,5,.8,0,.4);
     labelpos(1,2,3,4,5,6,7,8);
enddef;
% z by Kanchi Gopinath
vardef char.z=
	setwidth .43em;

	pos1(thickwidth,80);	
	pos2(2thickwidth,30);
	pos3(2thickwidth,30);
	pos4(thickwidth,90);	% 90 is changed to 110 in his other file...

	x1l=0;
	y1l=xheight-thickwidth;
	

	y2r=xheight;
	x2r=w;
	
	x3l=0;
	y3l=0;

	x4l=w;
	y4l=0;

	stroke(1,2,.4,.3,.2);
	stroke(2,3,.5,.5,.5);
	stroke(3,4,0.6,0.2,0.3);
	labelpos(1,2,3,4);
enddef;
% - by Dan Mills
vardef char.hyphen =
    begingroup charcode:=ord"-";
%	charcd := '-;
	save glyphwidth,lsb,rsb;
	numeric glyphwidth,lsb,rsb;
	 
	glyphwidth = .25em;
	lsb = .1glyphwidth;
	rsb = .1glyphwidth;
	setwidth( lsb+glyphwidth+rsb );
 
% positions:
	pos1(thinwidth,90);
	pos2(thinwidth,90);
 
% coordinates:
	x1 = lsb;		y1 = .55xheight;
	x2 = lsb + glyphwidth;	y2 = y1;

% specials:
	% none

% draw stroke:
	stroke(1,2,0,0,0);
	
	labelpos(1,2);
    endgroup;
enddef; % char.hyphen

% . by Dan Mills
vardef char.period =
    begingroup charcode:=ord".";
%	charcd := '.;
	save glyphwidth,lsb,rsb;
	numeric glyphwidth,lsb,rsb;
	 
	glyphwidth = thickwidth;
	lsb = .6glyphwidth;
	rsb = .6glyphwidth;
	setwidth( lsb+glyphwidth+rsb );
 
% positions:
	pos1(thickwidth,90);
	pos2(thickwidth,90);
 
% coordinates:
	x1 = lsb;		y1l = 0;
	x2 = lsb + glyphwidth;	y2l = y1l;

% specials:
	% none

% draw stroke:
	stroke(1,2,0,0,0);
	
	labelpos(1,2);
    endgroup;
enddef; % char.period

% , by Dan Mills
vardef char.comma =
    begingroup charcode:=ord",";
%	charcd := ',;
	save glyphwidth,lsb,rsb;
	numeric glyphwidth,lsb,rsb;
	 
	glyphwidth = thickwidth;
	lsb = .6glyphwidth;
	rsb = .6glyphwidth;
	setwidth( lsb+glyphwidth+rsb );
 
% positions:
	pos1(thickwidth,90);
	pos2(thickwidth,90);
	pos3(.7thickwidth,0);
	pos4(.3thickwidth,0);

% coordinates:
	x1 = lsb;		y1l = 0;
	x2 = lsb + glyphwidth;	y2l = y1l;
	x3r = x2;		y3 = y1l;
	x4l = x1;		y4 = -1.5thickwidth;

% specials:
	% none

% draw stroke:
	stroke(1,2,0,0,0);
	stroke(3,4,0,0,0);
	
	labelpos(1,2,3,4);
    endgroup;
enddef; % char.comma
% now we generate the font!
openwindow 0 from (0,0) to (420,500) at (-40,310);
window:=0;
init.normal(1.618033);
%init.bold(1.618033);
%init.boldx(1.618033);
vardef make@#(expr ls,rs)=begingroup clear; charcode:=ord str@#;
 "the character "&str @#; char@#; chardw:=w+ls+rs; charwd:=chardw/hppp;
if proofing>.5: shipout e;
else:
proofrule((0,hheight),(w+ls+rs,hheight));
proofrule((0,-ydepth),(w+ls+rs,-ydepth));
proofrule((0,-ydepth),(0,hheight));
proofrule((w+ls+rs,-ydepth),(w+ls+rs,hheight));
proofrule((0-10,0),(0+10,0));
proofrule((w+ls+rs-10,0),(w+ls+rs+10,0));
 shipout (e shifted (ls,0)); fi
endgroup enddef;

tracingtitles:=1;
make.U(0,0);
make.l(0,0);
end
make.A(-.025em,.05em);
make.B(0,-.025em);
make.C(-.02em,-.02em);
make.D(-.02em,0);
make.E(0,-.05em);
make.F(0,-.05em);
make.G(0,0);
make.H(0,0);
make.I(-.05em,-.05em);
make.J(0,0);
make.K(0,0);
make.L(0,-.02em);
make.M(0,0);
make.N(0,0);
make.O(0,0);
make.P(.05em,-.075em);
make.Q(0,0);
make.R(0,-.2em);
make.S(0,0);
make.T(-.05em,-.075em);
make.!(0,-.075em);
make.U(0,0);
make.V(-.075em,0);
make.W(0,0);
make.X(-.05em,0);
make.Y(0,0);
make.Z(0,0);
make.a(-.05em,.5thickwidth);
make.b(0,-.025em);
make.c(.05em,0);
make.d(-.025em,0);
make.e(0,0);
make.f(0,0);
make.g(0,.01em);
make.h(0,0);
make.i(0,0);
make.j(-.05em,0);
make.k(-.02em,-.05em);
make.l(0,0);
make.m(0,0);
make.n(-.05em,.01em);
make.o(0,0);
make.p(.05em,0);
make.q(-.02em,0);
make.r(0,-.07em);
make.s(.05em,.05em);
make.t(-.025em,-.1em);
make.u(0,.04em);
make.v(-.025em,-.025em);
make.w(-.05em,-.05em);
make.x(0,0);
make.y(0,0);
make.z(.05em,.05em);
make.hyphen(0,0);
make.period(0,0);
make.comma(0,0);
fontdimen 1: 0, 1/3em/hppp, 1/6em/hppp, 1/9em/hppp, xheight/vppp,
	em/hppp, 1/9em/hppp;
end